﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Theme2
{
    public class Program
    {
        public const double SalaryBaseCoef = 1.5;
        public const int SalaryBaseValue = 1000;

        public static void Main(string[] args)
        {
            // Спецификация:

            // Зарплатный Калькулятор.
            // Позволяет рассчитывать зарплату на основе уровня работника, базового коэффициента и базового значения зарплаты.
            // Зарплата рассчитывается как среднее арифметическое между значениями (Баз.З-та * (Баз.К-т ^ Уровень)) и (Баз.З-та * (Баз.К-т ^ (Уровень + 1))).

            // Задание:

            // Создать копию определенного класса калькулятора "Calculator", назвав его в формате "Calculator_Имя_Фамилия".
            // - Стас, Сергей - "Calculator1".
            // - Иван, Данила - "Calculator2".
            // - Алексей - "Calculator3".
            // Создать копию метода для тестирования "Test_Calculator", назвав его в формате "Test_Calculator_Имя_Фамилия".

            // 1. Каждый класс калькулятора содержит свои ошибки, их надо отладить и исправить.
            // 2. Метод для тестирования должен использовать вашу копию класса.
            // 3. Для всех значений параметра "level" (0, 1, 2) результаты расчета должны совпадать с ожидаемыми.
            //    То есть в консоль должно выводиться 3 раза "Passed".

            Test_Calculator_Ivan_Saponenko();

            Console.Read();
        }

        public static void Test_Calculator_Ivan_Saponenko()
        {
            int level;
            double actualSalary, expectedSalary;

            level = 0;
            expectedSalary = 1250;
            actualSalary = Calculator2_Ivan_Saponenko.CalculateSalaryByLevel(level);
            Console.WriteLine("Level: {0}, Salary: {1}, Result: {2}", level, actualSalary,
                actualSalary == expectedSalary ? "Passed" : "Error");

            level = 1;
            expectedSalary = 1875;
            actualSalary = Calculator2_Ivan_Saponenko.CalculateSalaryByLevel(level);
            Console.WriteLine("Level: {0}, Salary: {1}, Result: {2}", level, actualSalary,
                actualSalary == expectedSalary ? "Passed" : "Error");

            level = 2;
            expectedSalary = 2812.5;
            actualSalary = Calculator2_Ivan_Saponenko.CalculateSalaryByLevel(level);
            Console.WriteLine("Level: {0}, Salary: {1}, Result: {2}", level, actualSalary,
                actualSalary == expectedSalary ? "Passed" : "Error");
        }

        public static void Test_Calculator()
        {
            int level;
            double actualSalary, expectedSalary;

            level = 0;
            expectedSalary = 1250;
            actualSalary = Calculator2.CalculateSalaryByLevel(level);
            Console.WriteLine("Level: {0}, Salary: {1}, Result: {2}", level, actualSalary,
                actualSalary == expectedSalary ? "Passed" : "Error");

            level = 1;
            expectedSalary = 1875;
            actualSalary = Calculator2.CalculateSalaryByLevel(level);
            Console.WriteLine("Level: {0}, Salary: {1}, Result: {2}", level, actualSalary,
                actualSalary == expectedSalary ? "Passed" : "Error");

            level = 2;
            expectedSalary = 2812.5;
            actualSalary = Calculator2.CalculateSalaryByLevel(level);
            Console.WriteLine("Level: {0}, Salary: {1}, Result: {2}", level, actualSalary,
                actualSalary == expectedSalary ? "Passed" : "Error");
        }

        public static void Calculator_Daniel_Stepanov()
        {
         Test_Calculator_Daniel_Stepanov();

                Console.Read();
            }

            public static void Test_Calculator_Daniel_Stepanov()
            {
                int level;
                double actualSalary, expectedSalary;

                level = 0;
                expectedSalary = 1250;
                actualSalary = Calculator2_Daniel_Stepanov.CalculateSalaryByLevel(level);
                Console.WriteLine("Level: {0}, Salary: {1}, Result: {2}", level, actualSalary,
                    actualSalary == expectedSalary ? "Passed" : "Error");

                level = 1;
                expectedSalary = 1875;
                actualSalary = Calculator2_Daniel_Stepanov.CalculateSalaryByLevel(level);
                Console.WriteLine("Level: {0}, Salary: {1}, Result: {2}", level, actualSalary,
                    actualSalary == expectedSalary ? "Passed" : "Error");

                level = 2;
                expectedSalary = 2812.5;
                actualSalary = Calculator2_Daniel_Stepanov.CalculateSalaryByLevel(level);
                Console.WriteLine("Level: {0}, Salary: {1}, Result: {2}", level, actualSalary,
                    actualSalary == expectedSalary ? "Passed" : "Error");
            }

            public static void Test_Calculator2_1()
            {
                int level;
                double actualSalary, expectedSalary;

                level = 0;
                expectedSalary = 1250;
                actualSalary = Calculator2.CalculateSalaryByLevel(level);
                Console.WriteLine("Level: {0}, Salary: {1}, Result: {2}", level, actualSalary,
                    actualSalary == expectedSalary ? "Passed" : "Error");

                level = 1;
                expectedSalary = 1875;
                actualSalary = Calculator2.CalculateSalaryByLevel(level);
                Console.WriteLine("Level: {0}, Salary: {1}, Result: {2}", level, actualSalary,
                    actualSalary == expectedSalary ? "Passed" : "Error");

                level = 2;
                expectedSalary = 2812.5;
                actualSalary = Calculator2.CalculateSalaryByLevel(level);
                Console.WriteLine("Level: {0}, Salary: {1}, Result: {2}", level, actualSalary,
                    actualSalary == expectedSalary ? "Passed" : "Error");
            }
        }
    }

